import torch
import torchvision

net = torchvision.models.ResNet()

# 初始化参数
optimizer = torch.optim.SGD(net.parameters(),lr=0.01)
# 调整学习率   # 每过10个epoch，学习率乘以0.1
scheduler = torch.optim.lr_scheduler.StepLR(optimizer,10,0.1)

# 训练过程中
for n in 20:
    scheduler.step()
    ...

# 可以随时查看学习率的值
optimizer.param_groups[0]['lr']

# 其他更新学习率的方式   自定义lamdba的方式
scheduler = torch.optim.lr_scheduler.LambdaLR(optimizer,lr_lambda=lambda epoch:1/(epoch+1))

# 不依赖epoch更新学习率
# 提供了基于训练中某些测量值使学习率动态下降的方法
scheduler = torch.optim.lr_scheduler.ReduceLROnPlateau()
#  mode='min' 还是'max'取决于优化的的损失还是准确率  即使用 scheduler.step(loss)还是scheduler.step(acc) 。

